home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
pao
/
towns
/
paolib
/
key.c
< prev
next >
Wrap
Text File
|
1991-10-18
|
4KB
|
137 lines
/* << High C V1.4 & 386ASM V2.0 >> ********************************************
**
** キーボード インターフェース ルーチン
**
** 1991.03.22 : CREATE
** 1991.03.23 : FINISH
**
** < History >
** 1991.03.22 : CREATE
** 1991.04.28 : 清書
**
** < note > : TABS = 4
**
** ☆ 注意 ☆
** FMC関数ライブラリを使用しているので,link時にFMC関数ライブラリと一緒にリンクする
** 必要があります.
**
** Programmed by Y.Hirata ( Nifty ID : NAB03321 )
**
******************************************************************************/
#include <fmc.h>
#include "hc.h"
/******************************** キー ON チェック *******************************/
int KEY_test( char *matrix,char keyadrs )
/*=============================================================================
** キーマトリクス中で、指定されたキーアドレスのキーが押されているかどうかチェックする.
**
** < INPUT > : キーマトリクス情報 , キーアドレス
** < OUTPUT > : なし
** < RETURN > : キーON ならば 真値 , キーOFF ならば 偽値.
=============================================================================*/
{
unsigned char testbit ;
int c ;
int byteoff ;
testbit = 0x01 ;
for ( c=0; c<(keyadrs%8); c++ ) testbit <<= 1 ;
byteoff = keyadrs / 8 ;
if ( (matrix[byteoff] & testbit) == testbit ) return( TRUE ) ;
return( FALSE ) ;
}
/******************************* キーMAKE 待ち *******************************/
void KEY_make( char keyadrs )
/*=============================================================================
** 指定されたキーアドレスのキーが押されるまで待つ.
**
** < INPUT > : キーアドレス
** < OUTPUT > : なし
** < RETURN > : なし
=============================================================================*/
{
char matrix[16] ;
do {
KYB_clrbuf() ;
KYB_matrix( matrix ) ;
} while ( !KEY_test( matrix,keyadrs ) ) ;
}
/****************************** キーBREAK 待ち *******************************/
void KEY_break( char keyadrs )
/*=============================================================================
** 指定されたキーアドレスのキーが放されるまで待つ.
**
** < INPUT > : キーアドレス
** < OUTPUT > : なし
** < RETURN > : なし
=============================================================================*/
{
char matrix[16] ;
do {
KYB_clrbuf() ;
KYB_matrix( matrix ) ;
} while ( KEY_test( matrix,keyadrs ) ) ;
}
/******************************* キー押下チェック ********************************/
int KEY_hitchk( void )
/*=============================================================================
** キーボードが押されたかどうかチェックする.
**
** < INPUT > : なし
** < OUTPUT > : なし
** < RETURN > : キー入力ありならば 真値 , なしならば 偽値.
**
** キーマトリクスでチェックしているために、キーバッファには影響されず,この関数が呼ばれた時点
** のキー押下状態を返している点に注意.
=============================================================================*/
{
char matrix[16] ;
char keyon ;
int c ;
KYB_matrix( matrix ) ;
keyon = FALSE ;
for ( c=0; c<16; c++ ) {
if ( matrix[c] ) {
keyon = TRUE ;
break ;
}
}
return( keyon ) ;
}
/**************************** キー押下チェック(マトリクス) ****************************/
int KEY_matrix_check( char *matrix )
/*=============================================================================
** キーマトリクス中に押されたキーがあるかどうかチェックする.
**
** < INPUT > : キーマトリクス情報
** < OUTPUT > : なし
** < RETURN > : キー入力ありならば 真値 , なしならば 偽値.
=============================================================================*/
{
char keyon ;
int c ;
keyon = FALSE ;
for ( c=0; c<16; c++ ) {
if ( matrix[c] ) {
keyon = TRUE ;
break ;
}
}
return( keyon ) ;
}